//package com.zhousb.deviceManager.websocket2;
//
///**
// * @author ZhouShenBin
// * @date 2024/7/9 9:52
// * @description
// */
//import jakarta.websocket.*;
//import jakarta.websocket.server.ServerEndpoint;
//import lombok.EqualsAndHashCode;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//
//import java.io.IOException;
//import java.util.concurrent.CopyOnWriteArraySet;
//
//
//@ServerEndpoint("/ws/automate")
//@Component
//@Slf4j
//@EqualsAndHashCode
//public class WebSocketServer {
//    private static int onLineCount = 0;//记录在线连接数，应该做成线程安全的
//
//    //线程安全set,用来存储每个客户的WebSocketServer对象
//    private static CopyOnWriteArraySet<WebSocketServer> webSocketServers = new CopyOnWriteArraySet<>();
//
//    //与某个客户端的连接会话，需要通过它来给客户发送数据
//    private Session session;
//
//    /**
//     * <p>
//     * Description: 连接建立成功后调用的方法<br>
//     * <p>
//     * Datetime: 2020/5/28 22:25
//     * </p>
//     *
//     * @return
//     * @since 2020/5/28 22:25
//     */
//    @OnOpen
//    public void onOpen(Session session) {
//        System.out.println("连接了哦");
//        this.session = session;
//        webSocketServers.add(this);
//        addOnlineCount();
//        System.out.println();
//    }
//
//    /**
//     * <p>
//     * Description: 关闭会话连接<br>
//     * <p>
//     * Datetime: 2020/5/28 22:39
//     * </p>
//     *
//     * @param
//     * @param
//     * @return
//     * @since 2020/5/28 22:39
//     */
//    @OnClose
//    public void onClose(Session session) {
//        webSocketServers.remove(this);
//        subOnlineCount();
//    }
//
//
//    /**
//     * <p>
//     * Description: 发送消息<br>
//     * <p>
//     * Datetime: 2020/5/28 22:39
//     * </p>
//     * @since 2020/5/28 22:39
//     */
//    @OnMessage
//    public void onMessage(String message, Session session) {
//        System.out.println("来自客户端的消息：" + message);
//        for (WebSocketServer socket : webSocketServers) {
//            try {
//                socket.sendMessage(message);
//            } catch (IOException e) {
//                e.printStackTrace();
//                continue;
//            }
//        }
//    }
//
//
//    public void sendMessage(String message) throws IOException {
//        this.session.getBasicRemote().sendText(message);
//    }
//
//    @OnError
//    public void onError(Session session, Throwable error) {
//        System.out.println("发送消息失败");
//        error.printStackTrace();
//    }
//
//    public static synchronized void addOnlineCount() {
//        WebSocketServer.onLineCount++;
//    }
//
//    public static synchronized void subOnlineCount() {
//        WebSocketServer.onLineCount--;
//    }
//
//    public static synchronized int getOnLineCount() {
//        return onLineCount;
//    }
//
//}
//
